home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / bin / dh_bash-completion < prev    next >
Text File  |  2009-10-05  |  3KB  |  115 lines

  1. #!/usr/bin/perl -w
  2.  
  3. =head1 NAME
  4.  
  5. dh_bash-completion - install bash completions for package
  6.  
  7. =cut
  8.  
  9. use strict;
  10. use File::Find;
  11. use Debian::Debhelper::Dh_Lib;
  12.  
  13. =head1 SYNOPSIS
  14.  
  15. B<dh_bash-completion> [S<I<debhelper options>>]
  16.  
  17. =head1 DESCRIPTION
  18.  
  19. dh_bash-completion is a debhelper program that is responsible for installing
  20. completions for bash, usable installing the "bash-completion" package.
  21.  
  22. If a file named debian/package.bash-completion exists, then different actions
  23. are performed, depending on its format.
  24.  
  25. It can be a proper completion snippet, and in that case it would be installed
  26. in the completion directory, and no other actions would be performed.
  27.  
  28. It can also be a list of files, with an optionally specified name to call the
  29. completion snippet after. The file format is as follows:
  30.  
  31.   my/path/to/foo-completion       # this would be installed as "foo-completion"
  32.   my/path/to/bar-completion  baz  # this would be installed as "baz"
  33.  
  34. =cut
  35.  
  36. init();
  37.  
  38. my $srcdir = '.';
  39. $srcdir = $dh{SOURCEDIR}."/" if defined $dh{SOURCEDIR};
  40.  
  41. foreach my $package (@{$dh{DOPACKAGES}}) {
  42.     next if is_udeb($package);
  43.  
  44.     my $tmp = tmpdir($package);
  45.     my $bc_dir = "$tmp/etc/bash_completion.d";
  46.     my $completions = pkgfile($package,"bash-completion");
  47.  
  48.     my @install;
  49.     my $name;
  50.  
  51.     if ($completions) {
  52.         if (! -d "$bc_dir") {
  53.             doit("install", "-d", "$bc_dir");
  54.         }
  55.  
  56.         # try parsing a list of files
  57.         @install = filedoublearray($completions);
  58.         foreach my $set (@install) {
  59.             my @filelist;
  60.             my @tmp = @$set;
  61.             if (@$set > 1) {
  62.                 $name = pop @$set;
  63.             }
  64.             else {
  65.                 $name = basename($tmp[0]);
  66.             }
  67.             verbose_print "installing $tmp[0] as $name";
  68.  
  69.             my @found;
  70.             foreach my $glob (@$set) {
  71.                 @found = glob "$srcdir/$glob";
  72.                 if (!compat(6)) {
  73.                     # Fall back to looking into debian/tmp
  74.                     if (!@found || !-e $found[0]) {
  75.                         @found = glob "debian/tmp/$glob";
  76.                     }
  77.                 }
  78.  
  79.                 if (!@found || !-e $found[0]) {
  80.                     warning "file-list parsing failed, installing as proper snippet";
  81.  
  82.                     doit("install", "-p", "-m644", $completions, "$bc_dir/$package");
  83.                     exit 0
  84.                 }
  85.                 push @filelist, @found;
  86.             }
  87.  
  88.             if (! compat(4)) { # check added in v5
  89.                 # glob now, relative to srcdir
  90.                 if (!@filelist) {
  91.                     error("$package missing files (@$set), aborting");
  92.                 }
  93.             }
  94.  
  95.             foreach my $src (@filelist) {
  96.                 doit("install", "-p", "-m644", $src, "$bc_dir/$name");
  97.             }
  98.         }
  99.     }
  100. }
  101.  
  102. =head1 SEE ALSO
  103.  
  104. L<debhelper(1)>
  105.  
  106. This program is a part of bash-completion.
  107.  
  108. L<bash(1)>
  109.  
  110. =head1 AUTHOR
  111.  
  112. David Paleino <d.paleino@gmail.com>
  113.  
  114. =cut
  115.